//
// File:	IEventManager.hpp
// Author:	Thomas TISSOT-DUPONT
// Login:	<thomas.tissotdupont@free.fr>
//
// Created:	02/05/2010 at 20:04:45
// Purpose:	
//
#ifndef IEVENTMANAGER_HPP
#define IEVENTMANAGER_HPP

#include <string>
#include <boost/signals2.hpp>

class IEventManager
{
public:
	typedef boost::signals2::connection		EventConnection;

public:
	virtual void	Update() = 0;

public:
	virtual void	Connect(void *pTarget, void *pTargetEvent, void *pCaller, const std::string &callerFunctionName, const EventConnection &) = 0;
	virtual void	Disconnect(void *pTarget, void *pTargetEvent, void *pCaller, const std::string &callerFunctionName) = 0;
	virtual void	DisconnectTarget(void *pTarget) = 0;
	virtual void	DisconnectEvent(void *pTargetEvent) = 0;
	virtual void	DisconnectCaller(void *pCaller) = 0;
	virtual void	DisconnectAll() = 0;
};

#endif //!IEVENTMANAGER_HPP
